//Do File for analysis for The Political Benefits of Student Loan Debt Relief//
//Use data file "1-replication data.dta" for this analysis//
//Run in StataSE 17.0//

//CONTROL VARIABLE RECODES//

**party id recodes**

gen pid5=.
replace pid5=1 if pid4==1
replace pid5=2 if pid_lean==2
replace pid5=3 if pid_lean==3
replace pid5=4 if pid_lean==1
replace pid5=5 if pid4==3

tab pid5

recode pid5 1=0 2=0 3=. 4=1 5=1, gen(pid2)

tab pid2 

**gender recode from 3 category to 2**

recode gender 1=1 2=0 3=0, gen(male)
label def malelbl 0 "0 Female/Non-binary" 1 "1 Male" 
label val male malelbl

tab male

**race recodes**

recode race 1=1 2=0 3=0 4=0 5=0 6=0 7=0, gen(white)
label def whitelbl 0 "0 Non-White" 1 "1 White" 
label val white whitelbl

tab white 

recode race 1=0 2=1 3=0 4=0 5=0 6=0 7=0, gen(black)
label def blacklbl 0 "0 Not Black" 1 "1 Black" 
label val black blacklbl

tab black 

**income centering on mean**

recode inc 1=-2 2=-1 3=0 4=1 5=2 6=3 7=4, gen(inc0)
label def inc0lbl  0 "0 50-75k" 
label val inc0 inc0lbl

tab inc0 

**education centering on mean**

recode educ 1=-4 2=-3 3=-2 4=-1 5=0 6=1 7=2, gen(educ0)
label def educlbl  0 "0 bachelors degree" 
label val educ0 educlbl  

tab educ0 

**age recode from continuous to binary**

gen young=.
replace young=1 if age<35
replace young=0 if age>34
label def younglbl 0 "0 35+" 1 "Under 35" 
label val young younglbl

tab young

**student borrower recode from 3 cateogry to 2**

recode sl_debt 1=1 2=0 3=0, gen(stud_debt)
label def stud_debtlbl 0 "0 No" 1 "1 Yes" 
label val stud_debt stud_debtlbl

//GOTV 2020 EXPERIMENTAL TREATMENT VARIABLES//

**Forgive All Treatment vs None**

gen all_fx=1 if slact_all ==1
replace all_fx=0 if slact_none ==1

**Forgive $50k Treatment vs None**

gen fifty_fx=1 if slact_50k ==1
replace fifty_fx=0 if slact_none ==1

**Forgive $10k Treatment vs None**

gen ten_fx=1 if slact_10k ==1
replace ten_fx=0 if slact_none ==1

**Extend Pause Treatment vs None** 

gen pause_fx=1 if slact_pause ==1
replace pause_fx=0 if slact_none ==1


//CONJOINT EXPERIMENT VARIABLES//

**Collapse attribute variables across profiles into single attribute variable**

gen plan1_amt = .
replace plan1_amt = choice1_Ammount1 if iteration == 1
replace plan1_amt = choice2_Ammount1 if iteration == 2
replace plan1_amt = choice3_Ammount1 if iteration == 3
replace plan1_amt = choice4_Ammount1 if iteration == 4
replace plan1_amt = choice5_Ammount1 if iteration == 5
replace plan1_amt = choice6_Ammount1 if iteration == 6
tab plan1_amt

gen plan2_amt = .
replace plan2_amt = choice1_Ammount2 if iteration == 7
replace plan2_amt = choice2_Ammount2 if iteration == 8
replace plan2_amt = choice3_Ammount2 if iteration == 9
replace plan2_amt = choice4_Ammount2 if iteration == 10
replace plan2_amt = choice5_Ammount2 if iteration == 11
replace plan2_amt = choice6_Ammount2 if iteration == 12
tab plan2_amt


gen plan1_level = .
replace plan1_level = choice1_School1 if iteration == 1
replace plan1_level = choice2_School1 if iteration == 2
replace plan1_level = choice3_School1 if iteration == 3
replace plan1_level = choice4_School1 if iteration == 4
replace plan1_level = choice5_School1 if iteration == 5
replace plan1_level = choice6_School1 if iteration == 6
tab plan1_level

gen plan2_level = .
replace plan2_level = choice1_School2 if iteration == 7
replace plan2_level = choice2_School2 if iteration == 8
replace plan2_level = choice3_School2 if iteration == 9
replace plan2_level = choice4_School2 if iteration == 10
replace plan2_level = choice5_School2 if iteration == 11
replace plan2_level = choice6_School2 if iteration == 12
tab plan2_level


gen plan1_inc = .
replace plan1_inc = choice1_Income1 if iteration == 1
replace plan1_inc = choice2_Income1 if iteration == 2
replace plan1_inc = choice3_Income1 if iteration == 3
replace plan1_inc = choice4_Income1 if iteration == 4
replace plan1_inc = choice5_Income1 if iteration == 5
replace plan1_inc = choice6_Income1 if iteration == 6
tab plan1_inc

gen plan2_inc = .
replace plan2_inc = choice1_Income2 if iteration == 7
replace plan2_inc = choice2_Income2 if iteration == 8
replace plan2_inc = choice3_Income2 if iteration == 9
replace plan2_inc = choice4_Income2 if iteration == 10
replace plan2_inc = choice5_Income2 if iteration == 11
replace plan2_inc = choice6_Income2 if iteration == 12
tab plan2_inc


gen plan1_worktype = .
replace plan1_worktype = choice1_Restrict1 if iteration == 1
replace plan1_worktype = choice2_Restrict1 if iteration == 2
replace plan1_worktype = choice3_Restrict1 if iteration == 3
replace plan1_worktype = choice4_Restrict1 if iteration == 4
replace plan1_worktype = choice5_Restrict1 if iteration == 5
replace plan1_worktype = choice6_Restrict1 if iteration == 6
tab plan1_worktype

gen plan2_worktype = .
replace plan2_worktype = choice1_Restrict2 if iteration == 7
replace plan2_worktype = choice2_Restrict2 if iteration == 8
replace plan2_worktype = choice3_Restrict2 if iteration == 9
replace plan2_worktype = choice4_Restrict2 if iteration == 10
replace plan2_worktype = choice5_Restrict2 if iteration == 11
replace plan2_worktype = choice6_Restrict2 if iteration == 12
tab plan2_worktype


gen plan1_coll = .
replace plan1_coll = choice1_Inst1 if iteration == 1
replace plan1_coll = choice2_Inst1 if iteration == 2
replace plan1_coll = choice3_Inst1 if iteration == 3
replace plan1_coll = choice4_Inst1 if iteration == 4
replace plan1_coll = choice5_Inst1 if iteration == 5
replace plan1_coll = choice6_Inst1 if iteration == 6
tab plan1_coll

gen plan2_coll = .
replace plan2_coll = choice1_Inst2 if iteration == 7
replace plan2_coll = choice2_Inst2 if iteration == 8
replace plan2_coll = choice3_Inst2 if iteration == 9
replace plan2_coll = choice4_Inst2 if iteration == 10
replace plan2_coll = choice5_Inst2 if iteration == 11
replace plan2_coll = choice6_Inst2 if iteration == 12
tab plan2_coll


gen plan1_tax = .
replace plan1_tax = choice1_Fund1 if iteration == 1
replace plan1_tax = choice2_Fund1 if iteration == 2
replace plan1_tax = choice3_Fund1 if iteration == 3
replace plan1_tax = choice4_Fund1 if iteration == 4
replace plan1_tax = choice5_Fund1 if iteration == 5
replace plan1_tax = choice6_Fund1 if iteration == 6
tab plan1_tax

gen plan2_tax = .
replace plan2_tax = choice1_Fund2 if iteration == 7
replace plan2_tax = choice2_Fund2 if iteration == 8
replace plan2_tax = choice3_Fund2 if iteration == 9
replace plan2_tax = choice4_Fund2 if iteration == 10
replace plan2_tax = choice5_Fund2 if iteration == 11
replace plan2_tax = choice6_Fund2 if iteration == 12
tab plan2_tax

**Outcome variables for Conjoint**

gen plan1_vote = .
replace plan1_vote = choice1_plan1_vote if iteration == 1
replace plan1_vote = choice2_plan1_vote if iteration == 2
replace plan1_vote = choice3_plan1_vote if iteration == 3
replace plan1_vote = choice4_plan1_vote if iteration == 4
replace plan1_vote = choice5_plan1_vote if iteration == 5
replace plan1_vote = choice6_plan1_vote if iteration == 6
tab plan1_vote

gen plan2_vote = .
replace plan2_vote = choice1_plan2_vote if iteration == 7
replace plan2_vote = choice2_plan2_vote if iteration == 8
replace plan2_vote = choice3_plan2_vote if iteration == 9
replace plan2_vote = choice4_plan2_vote if iteration == 10
replace plan2_vote = choice5_plan2_vote if iteration == 11
replace plan2_vote = choice6_plan2_vote if iteration == 12
tab plan2_vote

**Assign values for each characteristic regardless of whether profile 1 or 2**

gen planx_amt = .
gen planx_level = .
gen planx_inc = .
gen planx_worktype = .
gen planx_coll = .
gen planx_tax = .
gen planx_vote = .

replace planx_amt = plan1_amt if iteration == 1
replace planx_amt = plan1_amt if iteration == 2
replace planx_amt = plan1_amt if iteration == 3
replace planx_amt = plan1_amt if iteration == 4
replace planx_amt = plan1_amt if iteration == 5
replace planx_amt = plan1_amt if iteration == 6

replace planx_amt = plan2_amt if iteration == 7
replace planx_amt = plan2_amt if iteration == 8
replace planx_amt = plan2_amt if iteration == 9
replace planx_amt = plan2_amt if iteration == 10
replace planx_amt = plan2_amt if iteration == 11
replace planx_amt = plan2_amt if iteration == 12

label def planx_amtlbl 0 "Interest Only" 1  "$10,000" 2 "$50,000" 3 "All" 
label val planx_amt planx_amtlbl

tab planx_amt plan1_amt
tab planx_amt plan2_amt

replace planx_level = plan1_level if iteration == 1
replace planx_level = plan1_level if iteration == 2
replace planx_level = plan1_level if iteration == 3
replace planx_level = plan1_level if iteration == 4
replace planx_level = plan1_level if iteration == 5
replace planx_level = plan1_level if iteration == 6

replace planx_level = plan2_level if iteration == 7
replace planx_level = plan2_level if iteration == 8
replace planx_level = plan2_level if iteration == 9
replace planx_level = plan2_level if iteration == 10
replace planx_level = plan2_level if iteration == 11
replace planx_level = plan2_level if iteration == 12

label def planx_levellbl 1 "Both undergraduate and graduate debt" 2 "Undergraduate debt only" 
label val planx_level planx_levellbl

tab planx_level plan1_level
tab planx_level plan2_level

replace planx_inc = plan1_inc if iteration == 1
replace planx_inc = plan1_inc if iteration == 2
replace planx_inc = plan1_inc if iteration == 3
replace planx_inc = plan1_inc if iteration == 4
replace planx_inc = plan1_inc if iteration == 5
replace planx_inc = plan1_inc if iteration == 6

replace planx_inc = plan2_inc if iteration == 7
replace planx_inc = plan2_inc if iteration == 8
replace planx_inc = plan2_inc if iteration == 9
replace planx_inc = plan2_inc if iteration == 10
replace planx_inc = plan2_inc if iteration == 11
replace planx_inc = plan2_inc if iteration == 12

label def planx_inclbl 1 "<$50,000 " 2 "<$125,000" 3 "All" 
label val planx_inc planx_inclbl

tab planx_inc plan1_inc
tab planx_inc plan2_inc

replace planx_worktype = plan1_worktype if iteration == 1
replace planx_worktype = plan1_worktype if iteration == 2
replace planx_worktype = plan1_worktype if iteration == 3
replace planx_worktype = plan1_worktype if iteration == 4
replace planx_worktype = plan1_worktype if iteration == 5
replace planx_worktype = plan1_worktype if iteration == 6

replace planx_worktype = plan2_worktype if iteration == 7
replace planx_worktype = plan2_worktype if iteration == 8
replace planx_worktype = plan2_worktype if iteration == 9
replace planx_worktype = plan2_worktype if iteration == 10
replace planx_worktype = plan2_worktype if iteration == 11
replace planx_worktype = plan2_worktype if iteration == 12

label def planx_worktypelbl 1 "None" 2 "Must work in public service" 3 "Must have been in repayment at least ten years" 
label val planx_worktype planx_worktypelbl

tab planx_worktype plan1_worktype
tab planx_worktype plan2_worktype

replace planx_coll = plan1_coll if iteration == 1
replace planx_coll = plan1_coll if iteration == 2
replace planx_coll = plan1_coll if iteration == 3
replace planx_coll = plan1_coll if iteration == 4
replace planx_coll = plan1_coll if iteration == 5
replace planx_coll = plan1_coll if iteration == 6

replace planx_coll = plan2_coll if iteration == 7
replace planx_coll = plan2_coll if iteration == 8
replace planx_coll = plan2_coll if iteration == 9
replace planx_coll = plan2_coll if iteration == 10
replace planx_coll = plan2_coll if iteration == 11
replace planx_coll = plan2_coll if iteration == 12

label def planx_colllbl 0 "Any" 1 "Public College Only" 2 "HBCU Only" 3 "Community College Only" 
label val planx_coll planx_colllbl

tab planx_coll plan1_coll
tab planx_coll plan2_coll

replace planx_tax = plan1_tax if iteration == 1
replace planx_tax = plan1_tax if iteration == 2
replace planx_tax = plan1_tax if iteration == 3
replace planx_tax = plan1_tax if iteration == 4
replace planx_tax = plan1_tax if iteration == 5
replace planx_tax = plan1_tax if iteration == 6

replace planx_tax = plan2_tax if iteration == 7
replace planx_tax = plan2_tax if iteration == 8
replace planx_tax = plan2_tax if iteration == 9
replace planx_tax = plan2_tax if iteration == 10
replace planx_tax = plan2_tax if iteration == 11
replace planx_tax = plan2_tax if iteration == 12

label def planx_taxlbl 1 "Tax on High Income Earners" 2 "Tax on Stock Trades" 3 "Existing Revenue" 
label val planx_tax planx_taxlbl

tab planx_tax plan1_tax
tab planx_tax plan2_tax

replace planx_vote = plan1_vote if iteration == 1
replace planx_vote = plan1_vote if iteration == 2
replace planx_vote = plan1_vote if iteration == 3
replace planx_vote = plan1_vote if iteration == 4
replace planx_vote = plan1_vote if iteration == 5
replace planx_vote = plan1_vote if iteration == 6

replace planx_vote = plan2_vote if iteration == 7
replace planx_vote = plan2_vote if iteration == 8
replace planx_vote = plan2_vote if iteration == 9
replace planx_vote = plan2_vote if iteration == 10
replace planx_vote = plan2_vote if iteration == 11
replace planx_vote = plan2_vote if iteration == 12

tab planx_vote plan1_vote
tab planx_vote plan2_vote

**recode for base levels**

recode planx_amt 1=0 0=1, gen(planx_amt_r)
label def planx_amt_rlbl 0 "$10,000" 1  "Interest Only" 2 "$50,000" 3 "All" 
label val planx_amt_r planx_amt_rlbl
tab planx_amt_r

recode planx_inc 3=0, gen(planx_inc_r)
label def planx_inc_rlbl 0 "All" 1 "<$50,000" 2 "<$125,000" 
label val planx_inc_r planx_inc_rlbl
tab planx_inc_r

recode planx_tax 3=0, gen(planx_tax_r)
label def planx_tax_rlbl 0 "Existing Revenue" 1 "Tax on High Income Earners" 2 "Tax on Stock Trades"  
label val planx_tax_r planx_tax_rlbl
tab planx_tax_r


//ANALYSIS FOR CONJOINT//

**Figure 1: Direct Effect of Attributes (AMCE) on Candidate Support**

reg planx_vote i.planx_amt_r i.planx_level i.planx_inc_r i.planx_worktype i.planx_coll i.planx_tax_r, vce(cluster id)

est store plan_vote

**additional formatting done in stata graph editor mode**

coefplot plan_vote, drop(_cons) xline(0, lpattern(dash) lcolor(black)) keep(*:) omitted baselevels scheme(s1mono) label headings (0.planx_amt_r = "{bf:Amount Forgiven}"  1.planx_level = "{bf:Type of Debt}" 0.planx_inc_r = "{bf:Income Eligibility}" 1.planx_worktype = "{bf:Other Restrictions}" 0.planx_coll = "{bf:Type of College}" 0.planx_tax_r = "{bf:Funding Source}", labsize(vsmall))


**Figure 2: Marginal Means of Attributes on Candidate Rating for Target Groups**

**uses "conjoint" package available from https://ideas.repec.org/c/boc/bocode/s458950.html**

ssc install conjoint

**Party ID**

conjoint planx_vote planx_amt_r planx_level planx_inc_r planx_worktype planx_coll planx_tax_r, est(mm) id(id) h0(3) subgroup(pid2) graph(0)

**Borrower Status**

conjoint planx_vote planx_amt_r planx_level planx_inc_r planx_worktype planx_coll planx_tax_r, est(mm) id(id) h0(3) subgroup(stud_debt) graph(0)

**Racialized Identity**

conjoint planx_vote planx_amt_r planx_level planx_inc_r planx_worktype planx_coll planx_tax_r, est(mm) id(id) h0(3) subgroup(white) graph(0)

**Age**

conjoint planx_vote planx_amt_r planx_level planx_inc_r planx_worktype planx_coll planx_tax_r, est(mm) id(id) h0(3) subgroup(young) graph(0)

**additional formatting done in stata graph editor mode**


//ANALYSIS FOR GOTV INFORMATION EXPERIMENT//

**Table 1: Effects of Student Debt Forgiveness on Voter Turnout and Choice**
**The table reports the means, sample sizes, and 1-tailed statistical significance from each of the following difference in means tests**

**DEMOCRATS**
**Turnout**
ttest turnout if iteration==1 & pid2==0, by(all_fx)
ttest turnout if iteration==1 & pid2==0, by(fifty_fx)
ttest turnout if iteration==1 & pid2==0, by(ten_fx)
ttest turnout if iteration==1 & pid2==0, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & pid2==0, by(all_fx)
ttest dem_vote if iteration==1 & pid2==0, by(fifty_fx)
ttest dem_vote if iteration==1 & pid2==0, by(ten_fx)
ttest dem_vote if iteration==1 & pid2==0, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & pid2==0, by(all_fx)
ttest biden_vote if iteration==1 & pid2==0, by(fifty_fx)
ttest biden_vote if iteration==1 & pid2==0, by(ten_fx)
ttest biden_vote if iteration==1 & pid2==0, by(pause_fx)

**REPUBLICANS**
**Turnout**
ttest turnout if iteration==1 & pid2==1, by(all_fx)
ttest turnout if iteration==1 & pid2==1, by(fifty_fx)
ttest turnout if iteration==1 & pid2==1, by(ten_fx)
ttest turnout if iteration==1 & pid2==1, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & pid2==1, by(all_fx)
ttest dem_vote if iteration==1 & pid2==1, by(fifty_fx)
ttest dem_vote if iteration==1 & pid2==1, by(ten_fx)
ttest dem_vote if iteration==1 & pid2==1, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & pid2==1, by(all_fx)
ttest biden_vote if iteration==1 & pid2==1, by(fifty_fx)
ttest biden_vote if iteration==1 & pid2==1, by(ten_fx)
ttest biden_vote if iteration==1 & pid2==1, by(pause_fx)

**BORROWERS**
**Turnout**
ttest turnout if iteration==1 & sl_debt==1, by(all_fx)
ttest turnout if iteration==1 & sl_debt==1, by(fifty_fx)
ttest turnout if iteration==1 & sl_debt==1, by(ten_fx)
ttest turnout if iteration==1 & sl_debt==1, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & sl_debt==1, by(all_fx)
ttest dem_vote if iteration==1 & sl_debt==1, by(fifty_fx)
ttest dem_vote if iteration==1 & sl_debt==1, by(ten_fx)
ttest dem_vote if iteration==1 & sl_debt==1, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & sl_debt==1, by(all_fx)
ttest biden_vote if iteration==1 & sl_debt==1, by(fifty_fx)
ttest biden_vote if iteration==1 & sl_debt==1, by(ten_fx)
ttest biden_vote if iteration==1 & sl_debt==1, by(pause_fx)

**NON BORROWERS**
**Turnout**
ttest turnout if iteration==1 & stud_debt==0, by(all_fx)
ttest turnout if iteration==1 & stud_debt==0, by(fifty_fx)
ttest turnout if iteration==1 & stud_debt==0, by(ten_fx)
ttest turnout if iteration==1 & stud_debt==0, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & stud_debt==0, by(all_fx)
ttest dem_vote if iteration==1 & stud_debt==0, by(fifty_fx)
ttest dem_vote if iteration==1 & stud_debt==0, by(ten_fx)
ttest dem_vote if iteration==1 & stud_debt==0, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & stud_debt==0, by(all_fx)
ttest biden_vote if iteration==1 & stud_debt==0, by(fifty_fx)
ttest biden_vote if iteration==1 & stud_debt==0, by(ten_fx)
ttest biden_vote if iteration==1 & stud_debt==0, by(pause_fx)

**BLACK VOTERS**
**Turnout**
ttest turnout if iteration==1 & black==1, by(all_fx)
ttest turnout if iteration==1 & black==1, by(fifty_fx)
ttest turnout if iteration==1 & black==1, by(ten_fx)
ttest turnout if iteration==1 & black==1, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & black==1, by(all_fx)
ttest dem_vote if iteration==1 & black==1, by(fifty_fx)
ttest dem_vote if iteration==1 & black==1, by(ten_fx)
ttest dem_vote if iteration==1 & black==1, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & black==1, by(all_fx)
ttest biden_vote if iteration==1 & black==1, by(fifty_fx)
ttest biden_vote if iteration==1 & black==1, by(ten_fx)
ttest biden_vote if iteration==1 & black==1, by(pause_fx)

**WHITE VOTERS**
**Turnout**
ttest turnout if iteration==1 & white==1, by(all_fx)
ttest turnout if iteration==1 & white==1, by(fifty_fx)
ttest turnout if iteration==1 & white==1, by(ten_fx)
ttest turnout if iteration==1 & white==1, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & white==1, by(all_fx)
ttest dem_vote if iteration==1 & white==1, by(fifty_fx)
ttest dem_vote if iteration==1 & white==1, by(ten_fx)
ttest dem_vote if iteration==1 & white==1, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & white==1, by(all_fx)
ttest biden_vote if iteration==1 & white==1, by(fifty_fx)
ttest biden_vote if iteration==1 & white==1, by(ten_fx)
ttest biden_vote if iteration==1 & white==1, by(pause_fx)

**YOUNG VOTERS**
**Turnout**
ttest turnout if iteration==1 & age<35, by(all_fx)
ttest turnout if iteration==1 & age<35, by(fifty_fx)
ttest turnout if iteration==1 & age<35, by(ten_fx)
ttest turnout if iteration==1 & age<35, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & age<35, by(all_fx)
ttest dem_vote if iteration==1 & age<35, by(fifty_fx)
ttest dem_vote if iteration==1 & age<35, by(ten_fx)
ttest dem_vote if iteration==1 & age<35, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & age<35, by(all_fx)
ttest biden_vote if iteration==1 & age<35, by(fifty_fx)
ttest biden_vote if iteration==1 & age<35, by(ten_fx)
ttest biden_vote if iteration==1 & age<35, by(pause_fx)

**VOTERS 35+**
**Turnout**
ttest turnout if iteration==1 & age>34, by(all_fx)
ttest turnout if iteration==1 & age>34, by(fifty_fx)
ttest turnout if iteration==1 & age>34, by(ten_fx)
ttest turnout if iteration==1 & age>34, by(pause_fx)

**2020 Dem Congressional Candidate**
ttest dem_vote if iteration==1 & age>34, by(all_fx)
ttest dem_vote if iteration==1 & age>34, by(fifty_fx)
ttest dem_vote if iteration==1 & age>34, by(ten_fx)
ttest dem_vote if iteration==1 & age>34, by(pause_fx)

**2024 Biden**
ttest biden_vote if iteration==1 & age>34, by(all_fx)
ttest biden_vote if iteration==1 & age>34, by(fifty_fx)
ttest biden_vote if iteration==1 & age>34, by(ten_fx)
ttest biden_vote if iteration==1 & age>34, by(pause_fx)
